/*
 * EcmaScriptVisitor.java - ScriptME
 * 
 * Copyright (c) 2009 Cesar Henriques <cesar at alttab.com.ar>.
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the GNU Lesser Public License v2.1
 * which accompanies this distribution, and is available at
 * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
 * 
 * Based on FESI Project
 * 
 * Contributors:
 * 	Jean-Marc Lugrin - initial API and implementation
 * 	Cesar Henriques <cesar at alttab.com.ar> - J2ME Porting and Extensions
 */
/*
 * 
 */

package org.scriptme.ecmascript.ast;

// TODO: Auto-generated Javadoc
/**
 * The Interface EcmaScriptVisitor.
 */
public interface EcmaScriptVisitor {

	/**
	 * Visit.
	 * 
	 * @param node
	 *            the node
	 * @param data
	 *            the data
	 * 
	 * @return the object
	 */
	public Object visit(SimpleNode node, Object data);

	/**
	 * Visit.
	 * 
	 * @param node
	 *            the node
	 * @param data
	 *            the data
	 * 
	 * @return the object
	 */
	public Object visit(ASTLiteral node, Object data);

	/**
	 * Visit.
	 * 
	 * @param node
	 *            the node
	 * @param data
	 *            the data
	 * 
	 * @return the object
	 */
	public Object visit(ASTIdentifier node, Object data);

	/**
	 * Visit.
	 * 
	 * @param node
	 *            the node
	 * @param data
	 *            the data
	 * 
	 * @return the object
	 */
	public Object visit(ASTThisReference node, Object data);

	/**
	 * Visit.
	 * 
	 * @param node
	 *            the node
	 * @param data
	 *            the data
	 * 
	 * @return the object
	 */
	public Object visit(ASTCompositeReference node, Object data);

	/**
	 * Visit.
	 * 
	 * @param node
	 *            the node
	 * @param data
	 *            the data
	 * 
	 * @return the object
	 */
	public Object visit(ASTFunctionCallParameters node, Object data);

	/**
	 * Visit.
	 * 
	 * @param node
	 *            the node
	 * @param data
	 *            the data
	 * 
	 * @return the object
	 */
	public Object visit(ASTPropertyValueReference node, Object data);

	/**
	 * Visit.
	 * 
	 * @param node
	 *            the node
	 * @param data
	 *            the data
	 * 
	 * @return the object
	 */
	public Object visit(ASTPropertyIdentifierReference node, Object data);

	/**
	 * Visit.
	 * 
	 * @param node
	 *            the node
	 * @param data
	 *            the data
	 * 
	 * @return the object
	 */
	public Object visit(ASTAllocationExpression node, Object data);

	/**
	 * Visit.
	 * 
	 * @param node
	 *            the node
	 * @param data
	 *            the data
	 * 
	 * @return the object
	 */
	public Object visit(ASTOperator node, Object data);

	/**
	 * Visit.
	 * 
	 * @param node
	 *            the node
	 * @param data
	 *            the data
	 * 
	 * @return the object
	 */
	public Object visit(ASTPostfixExpression node, Object data);

	/**
	 * Visit.
	 * 
	 * @param node
	 *            the node
	 * @param data
	 *            the data
	 * 
	 * @return the object
	 */
	public Object visit(ASTUnaryExpression node, Object data);

	/**
	 * Visit.
	 * 
	 * @param node
	 *            the node
	 * @param data
	 *            the data
	 * 
	 * @return the object
	 */
	public Object visit(ASTBinaryExpressionSequence node, Object data);

	/**
	 * Visit.
	 * 
	 * @param node
	 *            the node
	 * @param data
	 *            the data
	 * 
	 * @return the object
	 */
	public Object visit(ASTAndExpressionSequence node, Object data);

	/**
	 * Visit.
	 * 
	 * @param node
	 *            the node
	 * @param data
	 *            the data
	 * 
	 * @return the object
	 */
	public Object visit(ASTOrExpressionSequence node, Object data);

	/**
	 * Visit.
	 * 
	 * @param node
	 *            the node
	 * @param data
	 *            the data
	 * 
	 * @return the object
	 */
	public Object visit(ASTConditionalExpression node, Object data);

	/**
	 * Visit.
	 * 
	 * @param node
	 *            the node
	 * @param data
	 *            the data
	 * 
	 * @return the object
	 */
	public Object visit(ASTAssignmentExpression node, Object data);

	/**
	 * Visit.
	 * 
	 * @param node
	 *            the node
	 * @param data
	 *            the data
	 * 
	 * @return the object
	 */
	public Object visit(ASTExpressionList node, Object data);

	/**
	 * Visit.
	 * 
	 * @param node
	 *            the node
	 * @param data
	 *            the data
	 * 
	 * @return the object
	 */
	public Object visit(ASTStatement node, Object data);

	/**
	 * Visit.
	 * 
	 * @param node
	 *            the node
	 * @param data
	 *            the data
	 * 
	 * @return the object
	 */
	public Object visit(ASTStatementList node, Object data);

	/**
	 * Visit.
	 * 
	 * @param node
	 *            the node
	 * @param data
	 *            the data
	 * 
	 * @return the object
	 */
	public Object visit(ASTVariableDeclaration node, Object data);

	/**
	 * Visit.
	 * 
	 * @param node
	 *            the node
	 * @param data
	 *            the data
	 * 
	 * @return the object
	 */
	public Object visit(ASTIfStatement node, Object data);

	/**
	 * Visit.
	 * 
	 * @param node
	 *            the node
	 * @param data
	 *            the data
	 * 
	 * @return the object
	 */
	public Object visit(ASTWhileStatement node, Object data);

	/**
	 * Visit.
	 * 
	 * @param node
	 *            the node
	 * @param data
	 *            the data
	 * 
	 * @return the object
	 */
	public Object visit(ASTForStatement node, Object data);

	/**
	 * Visit.
	 * 
	 * @param node
	 *            the node
	 * @param data
	 *            the data
	 * 
	 * @return the object
	 */
	public Object visit(ASTEmptyExpression node, Object data);

	/**
	 * Visit.
	 * 
	 * @param node
	 *            the node
	 * @param data
	 *            the data
	 * 
	 * @return the object
	 */
	public Object visit(ASTForVarStatement node, Object data);

	/**
	 * Visit.
	 * 
	 * @param node
	 *            the node
	 * @param data
	 *            the data
	 * 
	 * @return the object
	 */
	public Object visit(ASTForInStatement node, Object data);

	/**
	 * Visit.
	 * 
	 * @param node
	 *            the node
	 * @param data
	 *            the data
	 * 
	 * @return the object
	 */
	public Object visit(ASTForVarInStatement node, Object data);

	/**
	 * Visit.
	 * 
	 * @param node
	 *            the node
	 * @param data
	 *            the data
	 * 
	 * @return the object
	 */
	public Object visit(ASTContinueStatement node, Object data);

	/**
	 * Visit.
	 * 
	 * @param node
	 *            the node
	 * @param data
	 *            the data
	 * 
	 * @return the object
	 */
	public Object visit(ASTBreakStatement node, Object data);

	/**
	 * Visit.
	 * 
	 * @param node
	 *            the node
	 * @param data
	 *            the data
	 * 
	 * @return the object
	 */
	public Object visit(ASTReturnStatement node, Object data);

	/**
	 * Visit.
	 * 
	 * @param node
	 *            the node
	 * @param data
	 *            the data
	 * 
	 * @return the object
	 */
	public Object visit(ASTWithStatement node, Object data);

	/**
	 * Visit.
	 * 
	 * @param node
	 *            the node
	 * @param data
	 *            the data
	 * 
	 * @return the object
	 */
	public Object visit(ASTFunctionDeclaration node, Object data);

	/**
	 * Visit.
	 * 
	 * @param node
	 *            the node
	 * @param data
	 *            the data
	 * 
	 * @return the object
	 */
	public Object visit(ASTFormalParameterList node, Object data);

	/**
	 * Visit.
	 * 
	 * @param node
	 *            the node
	 * @param data
	 *            the data
	 * 
	 * @return the object
	 */
	public Object visit(ASTProgram node, Object data);
}
